package com.cyz.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyz.model.dto.spaceuser.SpaceUserAddRequest;
import com.cyz.model.dto.spaceuser.SpaceUserQueryRequest;
import com.cyz.model.entity.SpaceUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cyz.model.vo.SpaceUserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author DELL
 * @description 针对表【space_user(空间用户关联)】的数据库操作Service
 * @createDate 2025-07-29 16:45:33
 */
public interface SpaceUserService extends IService<SpaceUser> {

    /**
     * 添加空间用户
     *
     * @param spaceUserAddRequest 添加空间用户请求
     * @return 空间用户id
     */
    Long addSpaceUser(SpaceUserAddRequest spaceUserAddRequest);

    /**
     * 空间用户校验（更添加和修改空间用户信息时用到）
     *
     * @param spaceUser 空间用户信息
     * @param add       是否是增加
     */
    void validSpaceUser(SpaceUser spaceUser, boolean add);

    /**
     * 根据Id删除空间用户
     *
     * @param spaceUserId 空间用户Id
     */
    void deleteSpaceUserById(Long spaceUserId);

    /**
     * 获取脱敏后的空间用户信息(单条)
     *
     * @param spaceUser 未脱敏的空间用户信息
     * @return 脱敏后的信息
     */
    SpaceUserVO getSpaceUserVO(SpaceUser spaceUser, HttpServletRequest request);

    /**
     * 获取脱敏后的空间用户信息(多条)
     *
     * @param spaceUserList 未脱敏的空间用户信息
     * @return 脱敏后的信息
     */
    List<SpaceUserVO> getSpaceUserVOList(List<SpaceUser> spaceUserList);

    /**
     * 将查询请求转换成mp的查询条件
     *
     * @param spaceUserQueryRequest 查询请求
     * @return 查询条件
     */
    QueryWrapper<SpaceUser> getQueryWrapper(SpaceUserQueryRequest spaceUserQueryRequest);


}
